﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
using System.Text;
using System.Xml.Linq;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 人员待遇享受检查
    /// </summary>
    [DataContract]
    public class SI2001Data
    {
        /// <summary>
        /// 人员编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_no")]
        public string PsnNo { get; set; }

        /// <summary>
        /// 险种类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "insutype")]
        public string Insutype { get; set; }

        /// <summary>
        /// 定点医药机构编号
        /// 参数类型：字符型
        /// 参数长度：12
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "fixmedins_code")]
        public string FixmedinsCode { get; set; }

        /// <summary>
        /// 医疗类别
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "med_type")]
        public string MedType { get; set; }

        /// <summary>
        /// 开始时间
        /// 参数类型：日期时间型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// yyyy-MM-dd
        /// </summary>
        [DataMember(Name = "begntime")]
        public string Begntime { get; set; }

        /// <summary>
        /// 结束时间
        /// 参数类型：日期时间型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// yyyy-MM-dd
        /// </summary>
        [DataMember(Name = "endtime")]
        public string Endtime { get; set; }

        /// <summary>
        /// 病种编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 按照标准代码填写：按病种结算病种目录代码(bydise_setl_list_code)、门诊慢特病病种目录代码(opsp_dise_cod)、日间手术病种目录代码(daysrg_dise_list_code)
        /// </summary>
        [DataMember(Name = "dise_codg")]
        public string DiseCodg { get; set; }

        /// <summary>
        /// 病种名称
        /// 参数类型：字符型
        /// 参数长度：500
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "dise_name")]
        public string DiseName { get; set; }

        /// <summary>
        /// 手术操作代码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：
        /// 日间手术病种时必填
        /// </summary>
        [DataMember(Name = "oprn_oprt_code")]
        public string OprnOprtCode { get; set; }

        /// <summary>
        /// 手术操作名称
        /// 参数类型：字符型
        /// 参数长度：500
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "oprn_oprt_name")]
        public string OprnOprtName { get; set; }

        /// <summary>
        /// 生育类别
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "matn_type")]
        public string MatnType { get; set; }

        /// <summary>
        /// 计划生育手术类别
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "birctrl_type")]
        public string BirctrlType { get; set; }

        /// <summary>
        /// 字段扩展
        /// 参数类型：字符型
        /// 参数长度：4000
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "exp_content")]
        public string ExpContent { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2001InputModel
    {
        [DataMember(Name = "data")]
        public SI2001Data SI2001Data { get; set; }
    }

    /// <summary>
    /// 2001
    /// 人员待遇享受检查
    /// </summary>
    [DataContract]
    public class SI2001RequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI2001InputModel Input { get; set; }

        public SI2001RequestModel(MedicalInsuranceOption medicalInsuranceOption,
            SI2001Data sI1101Data) : base(medicalInsuranceOption)
        {
            Infno = "2001";
            Input = new SI2001InputModel();
            Input.SI2001Data = sI1101Data;
        }
    }
}
